#include <stdio.h>
#include <algorithm>
using namespace std;
long long A=1992919, B=18181971;
FILE *f;
char s[20];
int ts=1;
int next()
{
	A=(A*13166771+B)%1000000007;
	B=(B*67771+A)%1000000007;
	return A;
}
void createtest() { sprintf(s, "%03d", ts); ts++; f=fopen(s, "w"); }
void gen0()
{
	createtest();
	fprintf(f, "6\n4 1 2 3 6 5\n1 6 3 4 5 2\n");
	createtest();
	fprintf(f, "1\n1\n1\n");
	createtest();
	fprintf(f, "3\n1 2 3\n1 2 3\n");
	createtest();
	fprintf(f, "2\n1 2\n2 1\n");
}
#define N 50100
int a[N];
void shuffle(int *a, int n)
{
	int i, j;
	for(i=n; i>0; j=next()%i, swap(a[i-1], a[j]), i--);
}
void gen1(int n)
{
	int i;
	createtest();
	fprintf(f, "%d\n", n);
	for(i=0; i<n; a[i]=i+1, i++);
	shuffle(a, n);
	for(i=0; i<n; fprintf(f, "%d%c", a[i], i<n-1?' ':'\n'), i++);
	shuffle(a, n);
	for(i=0; i<n; fprintf(f, "%d%c", a[i], i<n-1?' ':'\n'), i++);
}
int main()
{
	int i;
	gen0();
	for(i=0; i<10; i++)
		gen1(100);
	for(i=0; i<10; i++)
		gen1(50000);
	return 0;
}